/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package task1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Admin
 */
public class MyFile {
    static final String FILE_NOT_FOUND = "Файл не найден. ";
    static final String ERROR_IO = "Произошла ошибка I/O. ";
    static final String CLOSE_ERROR = "Ошибка закрытия файла. ";
    static final String WRITE_ERROR = "Ошибка записи данных. ";
    
    /**
     * открывает файл и записывает его содержимое в ArrayList
     * @param file_name имя файла
     * @return
     */
    public List<String> read_file(String file_name) {
        List<String> list = new ArrayList<>();
        BufferedReader input = null;
        try {
            File file = new File(file_name);
            FileReader fileReader = new FileReader(file);
            input = new BufferedReader(fileReader);
            String line;
            while ((line = input.readLine()) != null) {
                list.add(line);
            }
        } catch(FileNotFoundException e){
            System.out.println(FILE_NOT_FOUND);
        } catch(IOException e){
            System.out.println(ERROR_IO);
        }
        finally{
            try{
                input.close();
            } catch(IOException e){
                System.out.println(CLOSE_ERROR);                
            }            
        }
        return list;
    }
    
    /**
     * записывает данные в файл
     * @param file_name имя файла
     * @param text данные для записи
     */
    public void write_file(String file_name, String text) {
        BufferedWriter output = null;
        try {
            output = new BufferedWriter(new FileWriter(file_name, true));
            output.write(text);
            output.newLine();
            output.flush();
        } catch (IOException i) {
            System.out.println(WRITE_ERROR);
        } finally { 
            if (output != null) {
                try {
                    output.close();
                } catch (IOException i) {
                    System.out.println(CLOSE_ERROR);
                }
            }
        }
    }
    
    /**
     * создает файл для записи
     * @param file_name имя файла
     */
    public void create_file(String file_name){
        File file = new File(file_name);
        if (file.exists()) {
            try {
                file.delete();
                file.createNewFile();
            } catch (IOException e) {
                System.out.println(ERROR_IO);
            }
        }
    }
    
}
